package events;

import events.event.Event;

/**
 * Interfejs muszą implementować te klasy, które chcą rozsyłać zdarzenia.
 * 
 */
public interface IEventDispatcher {
  /**
   * Metoda dodaje obiekt nasłuchujący do listy powiadomień.
   * @param eventListener - obiekt nasłuchujący (musi implementować interfejs IEventListener)
   */
  public void addEventListener(IEventListener eventListener);
  
  /**
   * Metoda usuwa obiekt nasłuchujący z listy powiadomień.
   * @param eventListener - obiekt nasłuchujący, który ma zostać usunięty z listy
   */
  public void removeEventListener(IEventListener eventListener);
  
  /**
   * Metoda rozsyła zdarzenie do obiektów nasłuchujących.
   * @param event - obiekt zdarzenia
   */
  public void dispatchEvent(Event event);
}
